package persistencia;
import java.util.*;
import persistencia.dominio.*;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class Util {

  public Util() {
  }

  /**
   * indica si un objeto serializable ya esta en un vector
   * @param objeto
   * @param vector
   * @return
   */
  static public boolean contenido(ClaseDominio objeto,Vector vector)
  {
    if (objeto == null)
      return false;
    Enumeration enum = vector.elements();
    while (enum.hasMoreElements()) {
      ClaseDominio item = (ClaseDominio)enum.nextElement();
      if (item.getId().compareTo(objeto.getId())==0)
        return true;
    }

    return false;
  }



static public Vector resta(Vector minuendo,Vector sustraendo)
{
  Vector resta = new Vector();
  if (minuendo == null)
    return resta;
  if (sustraendo == null)
    return minuendo;

  Enumeration enum = minuendo.elements();
  while (enum.hasMoreElements()) {
    ClaseDominio objeto = (ClaseDominio)enum.nextElement();
    if (!contenido(objeto,sustraendo))
      resta.addElement(objeto);
  }

  return resta;
}


static public Vector eliminarObjetoAVector(ClaseDominio objeto,Vector vector)
{
  if (objeto == null)
  return vector;

  Enumeration enum = vector.elements();
  int i=0;
  while (enum.hasMoreElements()) {
    ClaseDominio item = (ClaseDominio)enum.nextElement();
    if (item.getId().compareTo(objeto.getId())==0)
    {
      vector.remove(i);
      return vector;
    }
    i++;
  }
  return vector;
}


/**
 * Agregar un objeto a un vector teniendo en cuenta el id, es el insert de conjuntos
 * @param objeto
 * @param vector
 * @return
 */
  static public Vector agregarObjetoAVector(ClaseDominio objeto,Vector vector)
  {
    if (objeto == null)
      return vector;

    Enumeration enum = vector.elements();
    int i=0;
    while (enum.hasMoreElements()) {
      ClaseDominio item = (ClaseDominio)enum.nextElement();
      if (item.getId().compareTo(objeto.getId())==0)
      {
        vector.setElementAt(item,i);
        return vector;
      }
      i++;
    }
    vector.addElement(objeto);
    return vector;
  }

  /**
   * retorna el objeto correspondiente al id
   * @param objeto
   * @param vector
   * @return
   */
  static public ClaseDominio getObjetoPorId(Long id,Vector vector)
   {
     if (id == null)
       return null;

     Enumeration enum = vector.elements();
     int i=0;
     while (enum.hasMoreElements()) {
       ClaseDominio item = (ClaseDominio)enum.nextElement();
       if (item.getId().compareTo(id)==0)
       {
         return item;
       }
       i++;
     }
     return null;
   }


  static public Vector copiaVector(Vector vector)
     {
       Vector vectorCopiado = new Vector();

       Enumeration enum = vector.elements();
       while (enum.hasMoreElements()) {
         Object item = enum.nextElement();
         vectorCopiado.add(item);
       }

       return vectorCopiado;
     }



}
